﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Collections;

namespace Logica
{
    public class Soap
    {
        private Nodo LeerLlamada(String soap_entrada)
        {
            soap_scanner nvoScanner = null;
            soap_parser nvoParser = null;

            try
            {
                using (TextReader reader = new StringReader(soap_entrada))
                {
                    nvoScanner = new soap_scanner(reader);
                    nvoParser = new soap_parser(nvoScanner);

                    nvoParser.parse();
                    return parser.raiz;
                }
            }
            catch (Exception ex)
            {
            }
            return null;
        }

        public String obtenerRespuesta(String soap_entrada)
        {
            Interprete nvo_interprete = new Interprete();

            Nodo raiz = LeerLlamada(soap_entrada);
            Nodo pars = raiz.getHijoEn(2);

            ArrayList parametros = new ArrayList();
            foreach(Nodo n in pars.getHijos())
            {
                Parametro p = new Parametro(Parametro.tipo_int, n.getEtiqueta());
                parametros.Add(p);
            }
            String respuesta = nvo_interprete.Ejecutar(raiz.getHijoEn(0).getEtiqueta(), Int32.Parse(raiz.getHijoEn(1).getEtiqueta()), raiz.getHijoEn(2).getEtiqueta(), parametros);


            return "<respuesta><![CDATA[" + respuesta + "]]></respuesta>";
        }
    }
}
